<?php
/**csv2table.php
 * CSV形式ファイルを HTML TABLE に変換する
 * @copyright	(c)studio pahoo
 * @author		パパぱふぅ
 * @version		1.4 2007/10/20 コード自動判別
 * @version		1.3 2007/06/13 デリミタ間にデータが存在しない場合は空白出力
 * @version		1.2 2007/02/11 XSS対策
 * @version		1.1 2006/11/29 CSVファイルから読み込むためのループ制御を修正した、他
 * @version		1.0 2004/12/25
*/
mb_internal_encoding('UTF-8');
$myself = basename($_SERVER['SCRIPT_NAME']);

echo <<< EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

EOF;
$delimiter = ",";					//CSV区切り文字

//【１】ファイル入力 =========================================================
if (isset($_FILES['file']['tmp_name']) == FALSE) {
echo <<< EOF
<p>■CSV形式データを HTML TABLE に変換する</p>
<form method="post" action="$myself" enctype="multipart/form-data">
ファイル選択：<input name="file" type="file" size="80" />
<input type="submit" name="submit" value="変換" />
</form>
<b>【使い方】</b>
<ol>
<li>[<b>参照</b>] をクリックするとファイルダイアログが表示されるので、目的のCSVファイル（カンマ区切り）を選択してください。</li>
<li>[<b>変換</b>] をクリックしてください。
<li>表形式で表示されます。</li>
</ol>
<hr />

EOF;
//【２】変換・結果出力 =======================================================
} else {
	if ($_FILES['file']['size'] == 0) {
		echo "Error! - 指定したファイルが見あたりません";
		exit(1);
	}
	$source_file = $_FILES["file"]["tmp_name"];		//アップされたCSVファイル
	if (($infp  = fopen($source_file, "r")) == FALSE) {
		echo "Error! - サーバ・トラブルが発生しました";
		exit(1);
	}
	echo "<table border=\"1\">\n";
	while (($csv = fgetcsv($infp, 1000, $delimiter)) !== FALSE) {
		print "<tr>\n";
		foreach ($csv as $key=>$val) {
			if ($val == '')		$val ='&nbsp';	//デリミタ間にデータが存在しない場合は空白出力
			$val = mb_convert_encoding($val, 'UTF-8', 'auto');	//コード変換
			echo "<td>$val<td>\n";
		}
		echo "</tr>\n";
	}
	echo "</table>";

	fclose($infp);
}
echo <<< EOF
</body>
</html>

EOF;
?>
